ক্লোজার (Clojure) একটি JVM (Java Virtual Machine) ভিত্তিক ভাষা, যার ফলে এটি জাভার সাথে সরাসরি ইন্টারঅ্যাক্ট করতে পারে। Clojure প্রোগ্রামিং ভাষাটি জাভার লাইব্রেরি ও API ব্যবহার করার সুযোগ দেয়, যা ক্লোজারের ক্ষমতাকে আরও বাড়িয়ে তোলে। Java Interoperability এর মাধ্যমে ক্লোজারের প্রোগ্রামাররা জাভার লাইব্রেরি এবং ক্লাসগুলো সহজে ক্লোজার কোডে অন্তর্ভুক্ত করতে পারেন।
Java Interoperability ক্লোজারে বিভিন্ন উপায়ে করা যায়। নিচে ক্লোজারে জাভা কোড ব্যবহারের কিছু পদ্ধতি আলোচনা করা হলো।
ক্লোজারে জাভার স্ট্যাটিক মেথড কল করতে ClassName/methodName
সিনট্যাক্স ব্যবহার করা হয়।
pow
ব্যবহার করা(Math/pow 2 3)
; আউটপুট: 8.0
এখানে Math/pow
মেথডটি 2
এবং 3
প্যারামিটার নিয়ে 2^3 = 8
ফলাফল প্রদান করে।
জাভার কোনো অবজেক্টের ইনস্ট্যান্স মেথড কল করতে ক্লোজারে (.methodName instance arguments)
সিনট্যাক্স ব্যবহার করা হয়।
toUpperCase
ব্যবহার করা(def my-string "hello world")
(.toUpperCase my-string)
; আউটপুট: "HELLO WORLD"
এখানে, .toUpperCase
মেথডটি my-string
অবজেক্টের উপর প্রয়োগ করা হয়েছে, যা সকল অক্ষরকে বড় করে রিটার্ন করে।
জাভার কনস্ট্রাক্টর ব্যবহার করে ক্লোজারে নতুন অবজেক্ট তৈরি করতে new
ফাংশন বা ClassName.
সিনট্যাক্স ব্যবহার করা হয়।
ArrayList
অবজেক্ট তৈরি করা(def my-list (new java.util.ArrayList))
; অথবা
(def my-list (java.util.ArrayList.))
উপরের উভয় পদ্ধতিই ArrayList
ক্লাসের একটি নতুন অবজেক্ট তৈরি করবে।
জাভার কোনো অবজেক্টের ফিল্ড অ্যাক্সেস করতে (.fieldName instance)
সিনট্যাক্স ব্যবহার করা হয়। স্ট্যাটিক ফিল্ডের ক্ষেত্রে ClassName/fieldName
ব্যবহার করা হয়।
Math
ক্লাসের PI
ফিল্ড ব্যবহার করাMath/PI
; আউটপুট: 3.141592653589793
এখানে Math/PI
ফিল্ডটি Math
ক্লাস থেকে সরাসরি অ্যাক্সেস করা হয়েছে।
ক্লোজারে proxy
ব্যবহার করে জাভার ইন্টারফেস ইমপ্লিমেন্ট করা যায়। এটি জাভার Runnable
বা ActionListener
এর মতো ইন্টারফেসগুলোর জন্য কার্যকর।
(defn run-task []
(proxy [java.lang.Runnable] []
(run [] (println "Task is running..."))))
(.start (Thread. (run-task)))
; আউটপুট: "Task is running..."
এখানে Runnable
ইন্টারফেস ইমপ্লিমেন্ট করে একটি Thread
তৈরি করা হয়েছে, যা run
মেথডে প্রিন্ট স্টেটমেন্টটি চালায়।
ক্লোজারে import
ব্যবহার করে এক বা একাধিক জাভা লাইব্রেরি আমদানি করা যায়।
Date
ক্লাস আমদানি এবং ব্যবহার করা(import '[java.util Date])
(def current-date (Date.))
(println current-date)
; আউটপুট: বর্তমান তারিখ এবং সময়
Java Interoperability এর মাধ্যমে ক্লোজার প্রোগ্রামাররা জাভার প্রচুর লাইব্রেরি এবং ক্লাস ব্যবহার করতে পারেন। ক্লোজারের এই ক্ষমতা তার প্রোগ্রামারদের জন্য কোড পুনঃব্যবহার এবং জাভার ইকোসিস্টেমের শক্তিশালী টুল এবং API ব্যবহার করার সুযোগ প্রদান করে।
পদ্ধতি | ব্যবহার |
---|---|
স্ট্যাটিক মেথড কল | Math/pow |
ইনস্ট্যান্স মেথড কল | (.toUpperCase my-string) |
কনস্ট্রাক্টর ব্যবহার | (java.util.ArrayList.) |
ফিল্ড অ্যাক্সেস | Math/PI |
ইন্টারফেস ইমপ্লিমেন্ট | proxy [java.lang.Runnable] |
লাইব্রেরি আমদানি | (import '[java.util Date]) |
Java Interoperability এর মাধ্যমে ক্লোজারে জাভার বিভিন্ন ক্ষমতা যুক্ত করা যায়, যা বড় প্রজেক্ট এবং মাল্টি-ফাংশনাল অ্যাপ্লিকেশন তৈরিতে সাহায্য করে।
common.read_more